package com.example.hyznbk.service;

import com.example.hyznbk.model.result.BaseReviewItemEntity;
import com.example.hyznbk.model.result.BaseReviewWrongEntity;
import com.example.hyznbk.model.result.DifficultReviewEntity;
import com.example.hyznbk.model.result.FavouriteListEntity;
import com.example.hyznbk.model.result.LearnTypeEntity;
import com.example.hyznbk.model.result.ReviewProgressEntity;
import com.example.hyznbk.model.result.ServerAddressEntityXml;
import com.example.hyznbk.model.result.TemplateEntity;

import java.util.List;

import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.Query;
import rx.Observable;
import testPaperCTCS.jsonGuessTesting.GuessTestingJson;
import testPaperFavoritesPage.jsonFavoritesPage.FavoritesPageJson;
import testPaperJBFX.jsonBasicReview.BasicReviewJson;
import testPaperNDFX.jsonDifficultReview.DifficultReviewJson;

import static com.lancoo.rxretrofitlibrary.http.RetrofitUrlManager.DOMAIN_NAME_HEADER;
import static com.lancoo.rxretrofitlibrary.http.RetrofitUrlManager.SERVER_ADDRESS_NAME;

/**
 * Created by tangminglong on 17/7/26.
 * api 访问接口的集合
 */

public interface HttpGetServer {

    @Headers({DOMAIN_NAME_HEADER + SERVER_ADDRESS_NAME})
    @GET("/SearchStatisticalInfo.asmx/WS_Search_GetServerAddressConf?serverID=")
    Observable<ServerAddressEntityXml> getServerAddress();

    @GET("api/ZNBK/W_ZNBK_GetPaperList")
    Observable<BaseReviewItemEntity> getBaseReviewItem1(
            @Query("stuId") String studId,@Query("stuName") String stuName,@Query("subjectId") String subjectId,
            @Query("stageNo") String stageNo,@Query("paperFrom") String paperFrom,
            @Query("State") int State,@Query("pageNumber") int pageNumber,
            @Query("pageSize") int pageSize) ;

    @GET("api/ZNBK/W_ZNBK_GetHardQueList")
    Observable<DifficultReviewEntity> getImpAndDifTutorItem1(
            @Query("stuId") String stuId,@Query("stuName") String stuName,@Query("subjectId") String subjectId,
            @Query("stageNo") String stageNo,@Query("queType") String queType, @Query("State") int State,
            @Query("pageNumber") int pageNumber, @Query("pageSize") int pageSize);

    @GET("api/ZNBK/W_ZNBK_GetWrongQueList")
    Observable<BaseReviewWrongEntity> getBaseReviewWrongItem(@Query("stuId") String stuId,@Query("subjectId") String subjectId,
                                                             @Query("stageNo") String stageNo,@Query("queType") String queType,
                                                             @Query("quesFrom") int quesFrom,@Query("state") int state,
                                                             @Query("pageNumber") int pageNumber,@Query("pageSize") int pageSize);


    @GET("api/ZNBK/W_ZNBK_GetPaperTemplet")
    Observable<List<TemplateEntity>> getReviewTemplate(@Query("StuID") String stuId, @Query("SubjectID") String subjectId,
                                                 @Query("StageNo") String stagNo);


    /**
     * 获取试题收藏转态信息
     * @param stuId
     * @param subjectId
     * @return
     */
    @GET("api/ZNBK/W_ZNBK_GetFavouriteList")
    Observable<FavouriteListEntity> getFavouriteList(@Query("stuId") String stuId, @Query("subjectId") String subjectId,
                                                     @Query("stageNo") String stageNo,@Query("typeId") String typeId,
                                                     @Query("quesBrief") String quesBrief,@Query("pageNumber") int pageNumber,@Query("pageSize") int pageSize);

    /**
     * 获取复习进度
     * @param subjectId
     * @param stuId
     * @param flag
     * @return
     */
    @GET("api/ZNBK/W_ZNBK_GetProgressDetail")
    Observable<ReviewProgressEntity> getProgressDetail(@Query("subjectId") String subjectId, @Query("stuId") String stuId,
                                                       @Query("flag") String flag);

    /**
     * 获取所有支持的题型
     * @param *subjectId 学科ID
     * @param *stagNo 学习阶段ID
     * @return
     */
    @GET("api/ZNBK/W_ZNBK_GetAllQueType")
    Observable<List<LearnTypeEntity>> getAllLearnType(@Query("subjectId") String subjectId, @Query("stageNo") String stageNo);


    /*
  * 获取猜题测试试卷信息明细
  * stuId=sa00000477&subjectId=C&stageNo=B&paperFrom=0&paperId=9EEE7517-1297-4442-B465-B4223790F735
  * */
    @GET("api/ZNBK/W_ZNBK_GetStuPaper")
    Observable<List<GuessTestingJson>> getGuessTestingJson(
            @Query("stuId") String studId,@Query("subjectId") String subjectId,
            @Query("stageNo") String stageNo,@Query("paperFrom") int paperFrom,
            @Query("paperId") String paperId) ;

    /*
* 获取基本复习试卷信息明细
* stuId=sa00000477&subjectId=C&stageNo=B&paperFrom=0&paperId=9EEE7517-1297-4442-B465-B4223790F735
* */
    @GET("api/ZNBK/W_ZNBK_GetStuPaper")
    Observable<List<BasicReviewJson>> getBasicReviewJson(
            @Query("stuId") String studId,@Query("subjectId") String subjectId,
            @Query("stageNo") String stageNo,@Query("paperFrom") int paperFrom,
            @Query("paperId") String paperId) ;



    /*
  * 获取难点复习题目信息明细
  * stuId=sa00000477&subjectId=C&stageNo=B&quesId=CBAE06052BHA107006t
  * */
    @GET("api/ZNBK/W_ZNBK_GetHardQueDetail")
    Observable<List<DifficultReviewJson>> getDifficultReviewJson(
            @Query("stuId") String studId,@Query("subjectId") String subjectId,
            @Query("stageNo") String stageNo,@Query("quesId") String quesId);



    /*
    * 获取收藏试题的明细信息
    *http://172.16.41.245:2015/api/ZNBK/W_ZNBK_GetFavouriteDetail?quesId=CBAE12088BHD10m013V
    * */
    @GET("api/ZNBK/W_ZNBK_GetFavouriteDetail")
    Observable<FavoritesPageJson> getFavoritesPageJson(
            @Query("quesId") String quesId,@Query("subjectId") String subjectId,
            @Query("stageNo") String stageNo);

}
